<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#prefers-contrast" />
<script type="text/javascript" src="/resources/testharness.js"></script>
<script type="text/javascript" src="/resources/testharnessreport.js"></script>

<script type="text/javascript" src="resources/matchmedia-utils.js"></script>
<script>
query_should_be_css_parseable("(prefers-contrast)");
query_should_be_css_parseable("(prefers-contrast: no-preference)");
query_should_be_css_parseable("(prefers-contrast: more)");
query_should_be_css_parseable("(prefers-contrast: less)");

query_should_not_be_css_parseable("(prefers-contrast: increase)");
query_should_not_be_css_parseable("(prefers-contrast: none)");
query_should_not_be_css_parseable("(prefers-contrast: forced high)");
query_should_not_be_css_parseable("(prefers-contrast: forced low)");
query_should_not_be_css_parseable("(prefers-contrast > increase)");
query_should_not_be_css_parseable("(prefers-increased-contrast)");
query_should_not_be_css_parseable("(prefers-decreased-contrast)");
query_should_not_be_css_parseable("(prefers-contrast: high)");
query_should_not_be_css_parseable("(prefers-contrast: low)");
query_should_not_be_css_parseable("(prefers-contrast: forced)");

query_should_be_js_parseable("(prefers-contrast)");
query_should_be_js_parseable("(prefers-contrast: no-preference)");
query_should_be_js_parseable("(prefers-contrast: more)");
query_should_be_js_parseable("(prefers-contrast: less)");

query_should_not_be_js_parseable("(prefers-contrast: increase)");
query_should_not_be_js_parseable("(prefers-contrast: none)");
query_should_not_be_js_parseable("(prefers-contrast: forced high)");
query_should_not_be_js_parseable("(prefers-contrast: forced low)");
query_should_not_be_js_parseable("(prefers-contrast > increase)");
query_should_not_be_js_parseable("(prefers-increased-contrast)");
query_should_not_be_js_parseable("(prefers-decreased-contrast)");
query_should_not_be_js_parseable("(prefers-contrast: high)");
query_should_not_be_js_parseable("(prefers-contrast: low)");
query_should_not_be_js_parseable("(prefers-contrast: forced)");

test(() => {
  // no-preference is the default and all other values evaluate to
  // true in the boolean context. If no-preference matches, then
  // boolean context should be false. If no-preference does not match
  // then boolean context should be true. Therefore, these two values
  // should always be each others inverse irrespective of OS level
  // settings.
  let booleanContext = window.matchMedia("(prefers-contrast)");
  let noPref = window.matchMedia("(prefers-contrast: no-preference)");
  assert_equals(noPref.matches, !booleanContext.matches);
}, "Check boolean context evaluation.");
</script>
